import { testAIResponse } from './testAI.js';

const APIPassword = 'rFanHQUBkEOUbZnjUOoB:tzOSJAWvogCYsgkbXkcW';
const userId = '10284711用户';
const API_URL = '/spark';

// API状态跟踪
let apiAvailable = true;
let lastApiTest = 0;

/**
 * 调用星火X1大模型API进行对话
 * @param {Array} messages - 对话历史，格式为[{role: 'user', content: '问题'}, ...]
 * @returns {Promise<Object>} - API返回结果
 */
export async function chatWithSpark(messages) {
  try {
    console.log('调用讯飞星火API，消息:', messages);
    
    // 每5分钟检查一次API可用性
    const now = Date.now();
    if (now - lastApiTest > 5 * 60 * 1000) {
      lastApiTest = now;
      try {
        const testResponse = await fetch(API_URL, {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json',
            'Authorization': `Bearer ${APIPassword}`
          },
          body: JSON.stringify({
            model: 'x1',
            messages: [{ role: 'user', content: '测试连接' }],
            user: userId,
            stream: false,
            temperature: 0.7,
            max_tokens: 50
          })
        });
        apiAvailable = testResponse.ok;
        console.log('API可用性测试:', apiAvailable);
      } catch (testError) {
        console.warn('API连接测试失败:', testError);
        apiAvailable = false;
      }
    }

    // 如果API不可用，使用模拟响应
    if (!apiAvailable) {
      console.log('使用模拟AI响应');
      const lastMessage = messages[messages.length - 1]?.content || '您好';
      return await testAIResponse(lastMessage);
    }
    
    const response = await fetch(API_URL, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${APIPassword}`
      },
      body: JSON.stringify({
        model: 'x1',
        messages: messages,
        user: userId,
        stream: false, // 改为非流式响应，简化处理
        temperature: 0.7,
        max_tokens: 4096
      })
    });

    if (!response.ok) {
      throw new Error(`API请求失败: ${response.status} ${response.statusText}`);
    }

    const data = await response.json();
    console.log('星火API响应:', data);

    // 处理不同的响应格式
    if (data.choices && data.choices.length > 0) {
      // 流式响应格式
      if (data.choices[0].delta && data.choices[0].delta.content) {
        return [data.choices[0].delta.content];
      }
      // 非流式响应格式
      if (data.choices[0].message && data.choices[0].message.content) {
        return [data.choices[0].message.content];
      }
    }

    // 如果没有找到预期格式，使用模拟响应
    console.log('API响应格式不正确，使用模拟响应');
    const lastMessage = messages[messages.length - 1]?.content || '您好';
    return await testAIResponse(lastMessage);

  } catch (error) {
    console.error('星火API调用错误:', error);
    apiAvailable = false;
    // 使用模拟响应
    const lastMessage = messages[messages.length - 1]?.content || '您好';
    return await testAIResponse(lastMessage);
  }
}

// 导出默认对象供其他方式使用
export default {
  chatWithSpark
};